{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis \n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "iris = load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# преобразование в pandas DataFrame\n",
    "df = pd.DataFrame(data = np.c_[iris['data'], iris['target']],\n",
    "                 columns = iris['feature_names'] + ['target'])\n",
    "df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)\n",
    "df.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'target', 'species']\n",
    "\n",
    "iris_df = df.drop(columns=['petal_length', 'petal_width', 'target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# разделение на тестовую и тренировочную выборку\n",
    "X = iris_df[['sepal_length', 'sepal_width']]\n",
    "y = iris_df['species']\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
    "                                                    train_size=0.67, \n",
    "                                                    random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearDiscriminantAnalysis()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearDiscriminantAnalysis</label><div class=\"sk-toggleable__content\"><pre>LinearDiscriminantAnalysis()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LinearDiscriminantAnalysis()"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# обучение модели\n",
    "model = LinearDiscriminantAnalysis()\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy: 0.84\n"
     ]
    }
   ],
   "source": [
    "y_pred = model.predict(X_test)\n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(f'Test Accuracy: {accuracy:.2f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Точность тестирования: 0.84\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_test_transformed = model.transform(X_test)\n",
    "\n",
    "# визуализация предсказаний для тестовой выборки\n",
    "label_encoder = LabelEncoder()\n",
    "y_test_encoded = label_encoder.fit_transform(y_test)\n",
    "\n",
    "plt.scatter(X_test_transformed[:, 0], X_test_transformed[:, 1], c=y_test_encoded, cmap='viridis')\n",
    "\n",
    "accuracy_score_test = model.score(X_test, y_test) \n",
    "print ( \"Точность тестирования:\", accuracy_score_test)\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
